// -----------------------------------------------------------------------
//  <copyright file="IntegrationEvent.cs" company="LiuliuSoft">
//      Copyright (c) 2022-2024 DaprPlus. All rights reserved.
//  </copyright>
//  <site>https://dapr.plus</site>
//  <last-editor>郭明锋</last-editor>
//  <last-date>2024/12/19 18:44</last-date>
// -----------------------------------------------------------------------

namespace DaprPlus.Domain.Events;

/// <summary>
/// 集成事件，领域外触发的异步事件，本地操作成功后才能发布集成事件
/// 集成事件的目的是将已提交事务和更新传播到其他子系统，无论它们是其他微服务、绑定上下文，还是外部应用程序。(集成事件是跨服务的，领域事件则不是)
/// 集成事件使用dapr实现
/// </summary>
public abstract record IntegrationEvent()
{
    public Guid EventId { get; } = Guid.NewGuid();

    public DateTime EventTime { get; } = DateTime.UtcNow;

    public string? EventSource { get; set; }

    /// <summary>
    /// 指定处理当前集成事件的目标服务，如指定，则事件主题名称为：{TargetService}.{EventName}
    /// </summary>
    public string? TargetService { get; set; }
}
